﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DataLayer.Class;
using DataLayer.Database;

namespace WinProgProject2
{
    public partial class MasaTipiIslemleri : Form
    {
        bool secim;
        int masaTipId;
        public MasaTipiIslemleri()
        {
            InitializeComponent();
        }

        private void btnIptal_Click(object sender, EventArgs e)
        {
                eskiyeDondur();
                temizle();   
        }

        private void btnSec_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.ShowDialog();
            lblResimYolu.Visible = true;
            lblResimYolu.Text = ofd.FileName.ToString();
            pictureBox1.ImageLocation = ofd.FileName.ToString();
        }

        private void btnKaydet_Click(object sender, EventArgs e)
        {
            try{
                if (txtTipAdi.Text == ""){
                    throw new Exception("Masa tipi adını giriniz.");}
                else{
                    if (txtKatsayi.Text == ""){
                        throw new Exception("Katsayıyı giriniz.");
                    }
                    else{
                        int m;
                        if (!Int32.TryParse(txtKatsayi.Text.ToString(), out m)){
                            throw new Exception("Katsayı bir tamsayı olmalıdır.");
                        }
                        else{
                            if (lblResimYolu.Text == ""){
                                throw new Exception("Masa tipine ait resmi seçiniz.");
                            }
                            else{
                                OpenFileDialog ofd = new OpenFileDialog();
                                ofd.FileName = lblResimYolu.Text;
                                if (!ofd.CheckFileExists){
                                    throw new Exception("Seçili resme ulaşılamıyor!\nLütfen yeniden resim seçin.");
                                }
                                else{
                                    MasaTipi masaTipi = new MasaTipi(txtTipAdi.Text, Convert.ToInt32(txtKatsayi.Text), lblResimYolu.Text);
                                    if (!secim){
                                        masaTipi.ekle();
                                    }
                                    else{
                                        masaTipi.MasaTipiID = masaTipId;
                                        masaTipi.guncelle();
                                    }
                                    lvDoldur();
                                    eskiyeDondur();
                                    temizle();
                                }
                            }
                        }
                    }
                }
            }
            catch(Exception ex){
                MessageBox.Show(null, ex.Message + "(" + ex.InnerException + ")", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public void lvDoldur()
        {
            lvMasaTipleri.Items.Clear();


            foreach (MasaTipi m in MasaTipiDB.tumMasaTipleriniCek())
            {
                ListViewItem lvItem = new ListViewItem(m.MasaTipiID.ToString());
                lvItem.SubItems.Add(m.TipAdi.ToString());
                lvItem.SubItems.Add(m.Katsayi.ToString());
                lvItem.SubItems.Add(m.ResimYolu.ToString());

                lvItem.Tag = m;

                lvMasaTipleri.Items.Add(lvItem);
            }
            
        }

        private void MasaTipiIslemleri_Load(object sender, EventArgs e)
        {
            eskiyeDondur();
            lvDoldur();
        }

        private void tsmSil_Click(object sender, EventArgs e)
        {
            if (lvMasaTipleri.SelectedItems.Count > 0)
            {
                DialogResult dr = new DialogResult();
                dr = MessageBox.Show("Bu işlemi onaylıyor musunuz?", "Onay bekleniyor..", MessageBoxButtons.OKCancel);
                if (dr == DialogResult.OK)
                {
                    MasaTipi m = lvMasaTipleri.SelectedItems[0].Tag as MasaTipi;
                    MasaTipiDB mdb = new MasaTipiDB();
                    mdb.masaTipiSil(m.MasaTipiID);
                    MessageBox.Show(m.MasaTipiID.ToString() + " numarali masa tipi silinmiştir.");
                    lvDoldur();
                }
            }
            else MessageBox.Show("Lütfen silmek istediğiniz masa tipini seçiniz.");
        }

        private void tsmEkle_Click(object sender, EventArgs e)
        {
            secim = false;
            genislet();
        }

        private void tsmDuzenle_Click(object sender, EventArgs e)
        {
            if (lvMasaTipleri.SelectedItems.Count > 0)
            {
                secim = true;
                genislet();

                MasaTipi m = lvMasaTipleri.SelectedItems[0].Tag as MasaTipi;
                MasaTipiDB mdb = new MasaTipiDB();
                masaTipId = m.MasaTipiID;
                txtTipAdi.Text = m.TipAdi;
                txtKatsayi.Text = m.Katsayi.ToString();
                lblResimYolu.Text = m.ResimYolu;
                pictureBox1.ImageLocation = m.ResimYolu;


            }
            else MessageBox.Show("Lütfen düzenlemek istediğiniz masa tipini seçiniz.");
        }

        public void eskiyeDondur()
        {
            this.Height = 205;
            lvMasaTipleri.Enabled = true;
            gbxEkleDuzenle.Enabled = false;
            this.CenterToScreen();
        }

        public void genislet()
        {
            this.Height = 424;
            lvMasaTipleri.Enabled = false;
            gbxEkleDuzenle.Enabled = true;
            this.CenterToScreen();
        }

        public void temizle()
        {
            txtKatsayi.Clear();
            txtTipAdi.Clear();
            lblResimYolu.Text = "";
            pictureBox1.ImageLocation = null;
        }
    }
}
